package com.zmn.plat.persistence.interfaces.product.tariff.item;

import com.zmn.plat.model.dto.product.ProductTariffRelationDTO;
import com.zmn.plat.model.entity.product.ServProductQuery;
import com.zmn.plat.model.vo.product.ServProductVO;
import com.zmn.plat.model.vo.product.tariff.item.price.ProductServiceItemExcutePriceQueryVo;
import com.zmn.plat.model.vo.product.tariff.item.price.ProductServiceItemExcutePriceResultVo;
import com.zmn.plat.model.vo.product.tariff.TariffProductItemPriceTariffQueryVO;
import com.zmn.plat.model.vo.product.tariff.TariffProductItemPriceTariffVO;
import com.zmn.plat.model.vo.product.tariff.TariffProductRelationVO;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @author tanbiao
 * @description
 * @since 2020/3/25 16:18
 * @modifier
 **/
public interface TariffProductServiceItemDao {
    /**
     * 根据后台产品id查询对应的计价器产品
     *
     * @param query
     * @return
     */
    List<ServProductVO> listPageByTariffProductIds(ServProductQuery query);

    /**
     * 描述: 查询指定渠道城市保内保外，后台产品服务分类一二级分类的配置了价格表的数据
     *
     * @param query
     * @return List<ProductTariffGroupItemVo>
     * @auther tanbiao
     * @since 2019/12/10 11:39
     */
    List<TariffProductItemPriceTariffVO> listTariffProductItemPriceTariffByQuery(TariffProductItemPriceTariffQueryVO query);

    /**
     * 功能描述 执行价
     * @author tanbiao
     * @since 2020/3/10
     * @param query
     * @return java.util.List<com.zmn.plat.model.vo.product.service.item.price.ProductServiceItemExcutePriceResultVo>
     * @modifier
     */
    List<ProductServiceItemExcutePriceResultVo> listByExcuteQuery(ProductServiceItemExcutePriceQueryVo query);

    /**
     * 功能描述 ：后台二级分类过滤可用的后台产品并确定价格表和产品的对应关系
     * @author tanbiao
     * @since 2020/3/10
     * @param query
     * @modifier
     */
    List<TariffProductRelationVO> listTariffProductRelationByQuery(TariffProductItemPriceTariffQueryVO query);

    /**
     * 功能描述 ：后台产品id和价格表id城市id查询默认的一口价服务项
     * @author tanbiao
     * @since 2020/3/10
     * @modifier
     */
    List<ProductServiceItemExcutePriceResultVo> listDefaultItemByRelationAndCityId(@Param("list") List<ProductTariffRelationDTO> ratioPriceProductList, @Param("cityId") Integer cityId);

    /**
     * 功能描述 ：后台产品id和价格表id 查询默认的一口价服务项
     * @author tanbiao
     * @since 2020/3/10
     * @modifier
     */
    List<ProductServiceItemExcutePriceResultVo> listDefaultItemByRelation(@Param("list") List<ProductTariffRelationDTO> list);

    /**
     * 功能描述 执行价统计
     * @author tanbiao
     * @since 2020/3/10
     * @param query
     * @return java.util.List<com.zmn.plat.model.vo.product.service.item.price.ProductServiceItemExcutePriceResultVo>
     * @modifier
     */
    Integer countByExcuteQuery(ProductServiceItemExcutePriceQueryVo query);


    /**
     * 根据后台产品id统计对应的计价器产品
     *
     * @param query
     * @return
     */
    Integer countByTariffProductIds(ServProductQuery query);

}
